Computer communication networks typically include one or more computer nodes termed servers and one or more computer nodes termed clients. A server provides a service to a client upon receiving a request from the client. An example of a typical service provided by a server is that provided by a file server.
A file server is a computer node having data storage capabilities. Data files which are to be accessed by users on various client nodes are stored on the file server. When a client node needs a file, a request is transmitted to the file server node which obtains the file from its local storage and transmits the file to the requesting client node. When the client node has completed its use of the file, the client node returns the updated file to the file server for storage. By using a file server rather than keeping files on local storage on the client node, the amount of local storage is reduced, the ability to backup or copy the file periodically is improved, and access to the file by multiple users is improved.
Many other types of servers are known. For example, print servers control the printing of documents for client nodes. By using a print server, each computer need not have a printer, thereby reducing the number of printers needed to support the number of computers on the network. Application servers provide application programs for clients, thereby avoiding the need of maintaining an application on each client. Application execution servers not only provide applications for the client nodes, but also execute the applications and thereby act as "compute engines" for the client nodes.
One issue that arises is that of apportioning the client requests to each server node which is capable of answering the requests. For example, if two application execution server nodes are both capable of executing an application for a client node, but one application execution server node is presently executing the application for three other clients and the other application server is not executing the application for any client, then what is desired is a means for sending any new requests for the execution of the application to the under-utilized server. This balancing of the work load among the various network servers is referred to as load leveling.
One prior art system which is capable of performing a rudimentary form of load leveling is the VAXcluster.TM. computer system of the Digital Equipment Corporation (Maynard, Mass.). A VAXcluster.TM. is a group of VAX.TM. computers connected together by a communication link. A user on a local area network connected to the VAXcluster.TM. can access different computers of the VAXcluster.TM. according to the load level of the various nodes. However, this is form of load leveling is more akin to a user selecting a different client node than it is selecting a server node in a present day network.
What is desired then is a method for permitting a client node to select the least loaded server node without user intervention. The present invention permits such functionality.